package dados;

import java.io;
import java.util.GregorianCalendar;
import utilitarios.LtpUtil;
/**
 * Classe abstrata Pessoa.
 * @author 1A224734731 - Amanda Caruso Cavallaro
 */

public abstract class Pessoa implements Comparable <Pessoa>
{
	
	public static int CLIENTE = 1;
	public static int VENDEDOR = 2;
	public static int FORNECEDOR = 3;
		
	private int codigo;
	private String nome;
	private String telefone;
	private String email;
	private GregorianCalendar dataCad;
	
	public Pessoa(int codigo, String nome, String telefone, String email,GregorianCalendar dataCad) 
	{
		this.codigo = codigo;
		this.nome = nome;
		this.telefone = telefone;
		this.email = email;
		this.dataCad = dataCad;
	}

	public int getCodigo() 
	{
		return codigo;
	}

	public void setCodigo(int codigo) 
	{
		this.codigo = codigo;
	}

	public String getNome() 
	{
		return nome;
	}

	public void setNome(String nome) 
	{
		this.nome = nome;
	}

	public String getTelefone() 
	{
		return telefone;
	}

	public void setTelefone(String telefone) 
	{
		this.telefone = telefone;
	}

	public String getEmail() 
	{
		return email;
	}

	public void setEmail(String email) 
	{
		this.email = email;
	}

	public GregorianCalendar getDataCad() 
	{
		return dataCad;
	}

	public void setDataCad(GregorianCalendar dataCad) 
	{
		this.dataCad = dataCad;
	}
	
	public abstract int tipoPessoa ();
	/**
	 * Metodo abstrato retornando o tipo de pessoa
	 */	
	
	/**
	 * M�todo para comparar nome de pessoa.
	 */
	public int compareTo (Pessoa pessoa)
	{
		return nome.compareTo(pessoa.nome);
	}	
	
	/**
	 * 
	 * Metodo toString retorando uma String com os atributos 
	 * da classe formatados
	 */
	public String toString() 
	{
		return 
				"Codigo: " + codigo + "\n" +
				"Nome: " + nome + "\n" +
				"Telefone: " + telefone + "\n" +
				"E-mail: " + email + "\n" +
				"DataCad: " + LtpUtil.formatarData(dataCad, "dd/MM/yyyy EEEE") + "\n";
	}
}
